A platform is an operating environment that may execute on physical and/or virtualized hosts. A physical host is a traditional computing system having physical hardware and an operating system. Virtual hosts are operating environments based on the virtualization of the physical hardware. Virtualization in the area of computing systems is the creation of a virtual (rather than physical) representation of some aspect of the computing system. Operating system level virtualization is an example of virtualization where a server is virtualized often to provide more secure hosting environments in server farms, datacenters, cloud computing or similar distributed computing systems. Operating system level virtualization can securely manage fixed physical computing system resources amongst a set of users. These users may be from competing entities and thus need to have secured execution environments to prevent the other users from gaining access to our interfering with their programs.
A platform can be used to manage a set of separate operating environments as containers, virtualization engines or similar instances. The platform manages the physical computing system resources amongst the set of operating environments. The management of resources can be referred to as a virtualization system. The virtualization system may support a container management system, which is a type of virtualization system that is lightweight (i.e., requires less computational and storage overhead) in comparison to other types of virtualization. The container management system enables any number of containers or similar entities to execute over any number of physical or virtual hosts as part of the platform. These containers are generated from container images, which are a format for defining code that will execute in the container.
Applications running on the platform are executed within containers or similar entities managed by the platform. The containers are a mechanism where applications can be controlled to limit the amount of computing resources utilized by the application during execution. The containers are isolated and controlled lightweight processes running on an operating system or hypervisor. The operating system may be implemented by a physical or virtual host. The containers and the applications they run do not have access to any information about other processes of the host. A container is restricted to a limited set of resources including processor(s), memory, fixed storage and similar resources. The container may be allotted a fixed set of such resources when it is instantiated.
The use of containers provides advantages for running application. The containers can share runtime code with their host operating system and other containers. This makes the containers lightweight (i.e., low resource) and portable such that a large number of containers can run across many hosts as a distributed system and the containers can be moved between hosts for load balancing of the available resources across the set of hosts. However, such distribution and movement of containers across a set of hosts makes the monitoring of the condition and life cycle of the containers more difficult.
The platforms manage and monitor the containers in this distributed environment, which may include thousands of containers running across hundreds of physical and/or virtual hosts. To monitor the status of the containers the platforms and in particular the container management system of the platforms may use a centralized system where everything about the managed containers can be known. These systems load containers which are stored as images. The container images are composed of a number of sub units sometimes referred to as layers or packages that may contain executable code for operating systems, libraries, application programming interfaces (APIs), applications and similar aspects that are to form a container and that define its functionality.